home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Online / CNetDemo / cnet / sdk / include / xproto.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-09-04  |  5.3 KB  |  169 lines

  1. /** xproto.h
  2. *
  3. *   Include file for External Protocol Handling
  4. *
  5. **/
  6. /*
  7. *   The structure
  8. */
  9. struct XPR_IO {
  10.           /* File name(s) */
  11.           char    *xpr_filename;
  12.           /* Open file */
  13.           long (* __asm xpr_fopen)(register __a0 char *filename,
  14.                        register __a1 char *accessmode);
  15.           /* Close file */
  16.           long (* __asm xpr_fclose)(register __a0 long filepointer);
  17.           /* Get char from file */
  18.           long (* __asm xpr_fread)(register __a0 char *buffer,
  19.                        register __d0 long size,
  20.                        register __d1 long count,
  21.                        register __a1 long fileptr);
  22.           /* Put string to file */
  23.           long (* __asm xpr_fwrite)(register __a0 char *buffer,
  24.                         register __d0 long size,
  25.                         register __d1 long count,
  26.                         register __a1 long fileptr);
  27.           /* Get char from serial */
  28.           long (* __asm xpr_sread)(register __a0 char *buffer,
  29.                        register __d0 long size,
  30.                        register __d1 long timeout);
  31.           /* Put string to serial */
  32.           long (* __asm xpr_swrite)(register __a0 char *buffer,
  33.                         register __d0 long size);
  34.           /* Flush serial input buffer */
  35.           long (*xpr_sflush)(void);
  36.           /* Print stuff */
  37.           long (* __asm xpr_update)(register __a0
  38.                           struct XPR_UPDATE *updatestruct);
  39.           /* Check for abort */
  40.           long (*xpr_chkabort)(void);
  41.           /* Check misc. stuff */
  42.           void (*xpr_chkmisc)(void);
  43.           /* Get string interactively */
  44.           long (* __asm xpr_gets)(register __a0 char *prompt,
  45.                       register __a1 char *buffer);
  46.           /* Set and Get serial info */
  47.           long (* __asm xpr_setserial)(register __d0 long newstatus);
  48.           /* Find first file name */
  49.           long (* __asm xpr_ffirst)(register __a0 char *buffer,
  50.                         register __a1 char *pattern);
  51.           /* Find next file name */
  52.           long (* __asm xpr_fnext)(register __d0 long oldstate,
  53.                        register __a0 char *buffer,
  54.                        register __a1 char *pattern);
  55.           /* Return file info */
  56.           long (* __asm xpr_finfo)(register __a0 char *filename,
  57.                        register __d0 long typeofinfo);
  58.           /* Seek in a file */
  59.           long (* __asm xpr_fseek)(register __a0 long fileptr,
  60.                        register __d0 long offset,
  61.                        register __d1 long origin);
  62.           /* Number of extensions */
  63.           long     xpr_extension;
  64.           /* Initialized by Setup. */
  65.           long    *xpr_data;
  66.           /* Multiple XPR options. */
  67.           long (* __asm xpr_options)(register __d0 long n,
  68.                          register __a0
  69.                              struct xpr_option **opt);
  70.           /* Delete a file. */
  71.           long (* __asm xpr_unlink)(register __a0 char *filename);
  72.           /* Query serial device */
  73.           long (*xpr_squery)(void);
  74.           /* Get various host ptrs */
  75.           long (* __asm xpr_getptr)(register __d0 long type);
  76.           };
  77. /*
  78. *   Number of defined extensions
  79. */
  80. #define XPR_EXTENSION 4L
  81.  
  82. /*
  83. *   Flags returned by XProtocolSetup()
  84. */
  85. #define XPRS_FAILURE    0x00000000L
  86. #define XPRS_SUCCESS    0x00000001L
  87. #define XPRS_NORECREQ    0x00000002L
  88. #define XPRS_NOSNDREQ    0x00000004L
  89. #define XPRS_HOSTMON    0x00000008L
  90. #define XPRS_USERMON    0x00000010L
  91. #define XPRS_HOSTNOWAIT 0x00000020L
  92. /*
  93. *   The update structure
  94. */
  95. struct XPR_UPDATE {    long  xpru_updatemask;
  96.             char *xpru_protocol;
  97.             char *xpru_filename;
  98.             long  xpru_filesize;
  99.             char *xpru_msg;
  100.             char *xpru_errormsg;
  101.             long  xpru_blocks;
  102.             long  xpru_blocksize;
  103.             long  xpru_bytes;
  104.             long  xpru_errors;
  105.             long  xpru_timeouts;
  106.             long  xpru_packettype;
  107.             long  xpru_packetdelay;
  108.             long  xpru_chardelay;
  109.             char *xpru_blockcheck;
  110.             char *xpru_expecttime;
  111.             char *xpru_elapsedtime;
  112.             long  xpru_datarate;
  113.             long  xpru_reserved1;
  114.             long  xpru_reserved2;
  115.             long  xpru_reserved3;
  116.             long  xpru_reserved4;
  117.             long  xpru_reserved5;
  118.            };
  119. /*
  120. *   The possible bit values for the xpru_updatemask are:
  121. */
  122. #define XPRU_PROTOCOL        0x00000001L
  123. #define XPRU_FILENAME        0x00000002L
  124. #define XPRU_FILESIZE        0x00000004L
  125. #define XPRU_MSG        0x00000008L
  126. #define XPRU_ERRORMSG        0x00000010L
  127. #define XPRU_BLOCKS        0x00000020L
  128. #define XPRU_BLOCKSIZE        0x00000040L
  129. #define XPRU_BYTES        0x00000080L
  130. #define XPRU_ERRORS        0x00000100L
  131. #define XPRU_TIMEOUTS        0x00000200L
  132. #define XPRU_PACKETTYPE     0x00000400L
  133. #define XPRU_PACKETDELAY    0x00000800L
  134. #define XPRU_CHARDELAY        0x00001000L
  135. #define XPRU_BLOCKCHECK     0x00002000L
  136. #define XPRU_EXPECTTIME     0x00004000L
  137. #define XPRU_ELAPSEDTIME    0x00008000L
  138. #define XPRU_DATARATE        0x00010000L
  139. /*
  140. *   The xpro_option structure
  141. */
  142. struct xpr_option {
  143.    char *xpro_description;    /* description of the option              */
  144.    long  xpro_type;        /* type of option                  */
  145.    char *xpro_value;        /* pointer to a buffer with the current value */
  146.    long  xpro_length;        /* buffer size                      */
  147. };
  148. /*
  149. *   Valid values for xpro_type are:
  150. */
  151. #define XPRO_BOOLEAN 1L     /* xpro_value is "yes", "no", "on" or "off"   */
  152. #define XPRO_LONG    2L     /* xpro_value is string representing a number */
  153. #define XPRO_STRING  3L     /* xpro_value is a string              */
  154. #define XPRO_HEADER  4L     /* xpro_value is ignored              */
  155. #define XPRO_COMMAND 5L     /* xpro_value is ignored              */
  156. #define XPRO_COMMPAR 6L     /* xpro_value contains command parameters     */
  157.  
  158. extern struct Library *XProtocolBase;
  159.  
  160. long XProtocolSend   ( struct XPR_IO *io );
  161. long XProtocolReceive( struct XPR_IO *io );
  162. long XProtocolSetup  ( struct XPR_IO *io );
  163. long XProtocolCleanup( struct XPR_IO *io );
  164.  
  165. #pragma libcall XProtocolBase XProtocolCleanup 1E 801
  166. #pragma libcall XProtocolBase XProtocolSetup 24 801
  167. #pragma libcall XProtocolBase XProtocolSend 2A 801
  168. #pragma libcall XProtocolBase XProtocolReceive 30 801
  169.